/**
 * 栈的顺序存储结构
*/

#define StackSize 100

typedef char DataType;
typedef struct
{
  DataType data[StackSize];
  int top;
} SeqStack;

SeqStack S;

// 置空栈
void InitStack(SeqStack *S)
{
  S->top = -1;
}

// 判断栈空
int StackEmpty(SeqStack *S)
{
  return S->top == -1;
}

// 判断栈满
int StackFull(SeqStack *S)
{
  return S->top == StackSize - 1;
}

// 进栈
void Push(SeqStack *S, DataType x)
{
  if (StackFull(S))
  {
    printf("栈溢出");
  }
  else
  {
    S->top = S->top + 1;
    S->data[S->top] = x;
  }
}

// 出栈
DataType Pop(SeqStack *S)
{
  if (StackEmpty(S))
  {
    printf("栈空");
    exit(0); //出错退出处理
  }
  else
  {
    return S->data[S->top--];
  }
}

// 获取栈顶元素
DataType GetTop(SeqStack *S)
{
  if (StackEmpty(S))
  {
    printf("栈空");
    exit(0);
  }
  else
  {
    return S->data[S->top];
  }
}

int main()
{
}